package com.platform.sms.tencent.utils;

import java.util.Arrays;
import java.util.Collections;
import java.util.List;

/**
 * 验证码生成工具类
 * @author renlei
 *
 */
public class CodeUtil {
	
	//去掉了数字0、1，小写的o、l，因为0和O、1和l比较像
    public final static String[] beforeShuffle = new String[] { /*"0", "1",*/ "2", "3", "4", "5", "6", "7",    
            "8", "9", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J","K", "L", "M", "N", "O",
            "P", "Q", "R", "S", "T", "U", "V","W", "X", "Y", "Z","a", "b", "c", "d", "e", "f",
            "g", "h", "i", "j","k", /*"l",*/ "m", "n", /*"o",*/ "p", "q", "r", "s", "t", "u", "v","w", "x", "y", "z" };
    
    //去掉4， 因为中国人不喜欢这个数字
    public final static String[] numShuffle = new String[] { "0", "1", "2", "3", /*"4",*/ "5", "6", "7", "8", "9" };
    
    public final static String[] charShuffle = new String[] {"A", "B", "C", "D", "E", "F", "G", "H", "I", "J","K", "L", "M", "N", "O",
        "P", "Q", "R", "S", "T", "U", "V","W", "X", "Y", "Z","a", "b", "c", "d", "e", "f",
        "g", "h", "i", "j","k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v","w", "x", "y", "z" };
    
   /**
    * 生成数字和字母的验证码
    * @param len 验证码长度
    * @return
    */
    public static String generateNumAndCharCode(int len) {
    	return generate(len, beforeShuffle);
    }
    
    /**
     * 生成纯字母验证码
     * @param len 验证码长度
     * @return
     */
    public static String generateCharCode(int len) {
    	return generate(len, charShuffle);
    }
    
    /**
     * 生成纯数字验证码
     * @param len 验证码长度
     * @return
     */
    public static String generateNumCode(int len) {
    	return generate(len, numShuffle);
    }
    
    public static String generate(int len, String[] str){
        List<String> list = Arrays.asList(str);
        Collections.shuffle(list);    
        StringBuilder sb = new StringBuilder();    
        for (int i = 0; i < len; i++) {    
            sb.append(list.get(i));    
        }    
        String afterShuffle = sb.toString();    
        return afterShuffle;
    }
}
